Universal Communications Infrastructure

ABSTRACT

In accordance with some implementations, a method for enabling communication with a user is disclosed. The method is performed on a server system having one or more processors and memory storing one or more programs for execution by the one or more processors. The server system sends communication data to a user using a first communication channel. The server system determines that the user has ceased using the first communication channel for receiving communications. The server system identifies a second communication channel. The server system sends further communication data to the user using the identified second communication channel.

RELATED APPLICATIONS

This application is claims priority to the following (1) U.S.Provisional Application Ser. No. 61/648,564, filed May 17, 2012,entitled “Progressively Asking for Increasing Amounts of User andNetwork Data”; (2) U.S. Provisional Application Ser. No. 61/648,566,filed May 17, 2012, entitled “Conversational Interfaces”; (3) U.S.Provisional Application Ser. No. 61/648,569, filed May 17, 2012,entitled “Universal Communications Infrastructure”; (4) U.S. ProvisionalApplication Ser. No. 61/648,578, filed May 17, 2012, entitled “TrustGraph”; (5) U.S. Provisional Application Ser. No. 61/648,582, filed May17, 2012, entitled “Universal Consumption Service”; (6) U.S. ProvisionalApplication Ser. No. 61/648,588, filed May 17, 2012, entitled “RewardStructures”; (7) U.S. Provisional Application Ser. No. 61/648,591, filedMay 17, 2012, entitled “System and Method for Social Network BasedReferrals”; (8) U.S. Provisional Application Ser. No. 61/688,655, filedMay 18, 2012, entitled “System and Method for Social Network BasedReferrals”; which are incorporated herein by reference in theirentirety.

This application is also related to the following (1) U.S. applicationSer. No. ______, filed ______, entitled “Progressively Asking forIncreasing Amounts of User and Network Data” (Attorney Docket:020610-5001); (2) U.S. application Ser. No. ______, filed ______,entitled “Conversational Interfaces” (Attorney Docket: 020610-5002); (3)U.S. application Ser. No. 13/769,181, filed Feb. 15, 2013, entitled“Trust Graph”; (4) U.S. application Ser. No. ______, filed ______,entitled “Zero Click Commerce Systems” (Attorney Docket: 020610-5005);(5) U.S. application Ser. No. ______, filed ______, entitled “UniversalConsumption Service” (Attorney Docket: 020610-5006); (6) U.S.application Ser. No. ______, filed ______, entitled “Reward Structures”(Attorney Docket: 020610-5007); (7) U.S. application Ser. No. ______,filed ______, entitled “Pre-Establishing Purchasing Intent for ComputerBased Commerce Systems” entitled “System and Method for Social NetworkBased Referrals” (Attorney Docket: 020610-5009); which are incorporatedherein by reference in their entirety.

TECHNICAL FIELD

The disclosed implementations relate to the field of online servicesgenerally and in particular to providing convenient interactions forusers.

BACKGROUND

Over the last two decades, the number of online services has increaseddramatically. Online services that have emerged include, for example,online commerce services and social networking services. These servicesopen up new experiences for user, including interactions between usersand new ways of shopping for goods and services. These services incur apositive network effect as more users sign up and use the service.

A source of inconvenience in the user experience is the provision ofinformation by the user to the online service in order to make full useof the service. The online service asks for a certain amount ofinformation upfront from the user at sign-up, and can subsequently askfor additional information. If the venue asks for too much informationtoo quickly, the user is overwhelmed and becomes less likely to providethe information, less likely to stay with the service, or less likely tosign up for the service in the first place. Another source ofinconvenience is the communication interface between the user and theonline service. A user can use different modes of communication on anygiven day. Limiting the user to one mode of communication with theservice inconveniences the user and limits the user's interaction withthe service. Requesting information from the user without requesting toomuch too quickly, and providing multiple avenues or modes ofcommunication with users, including avenues that has a conversationalfeel, make online services more convenient and user-friendly.

SUMMARY

In accordance with some implementations, a method for requesting userdata is disclosed. The method is performed on a server system having oneor more processors and memory storing one or more programs for executionby the one or more processors. The server system establishes a userprofile for a user, the user profile including one or more informationitems associated with the user. The server system receives a requestfrom the user to access additional services. In response to receivingthe user request, the server system requests additional information fromthe user.

In accordance with some implementations, a server system that requestsuser data is disclosed. The server system has one or more processors,and memory storing one or more programs to be executed by the one ormore processors. The one or more programs include instructions for:establishing a user profile for a user, the user profile including oneor more information items associated with the user; receiving a requestfrom the user to access additional services; and in response toreceiving the user request, requesting additional information from theuser.

In accordance with some implementations, a non-transitory computerreadable storage medium storing one or more programs configured forexecution by a server system is disclosed. The one or more programs alsoinclude instructions for: establishing a user profile for a user, theuser profile including one or more information items associated with theuser; receiving a request from the user to access additional services;and in response to receiving the user request, requesting additionalinformation from the user.

In accordance with some implementations, a method for responding torequests submitted through a conversational interface is disclosed. Themethod is performed on a server system having one or more processors andmemory storing one or more programs for execution by the one or moreprocessors. The server system receives a request from a user through aconversational interface. The server system determines, based on therequest, whether the system is able to fulfill the requestautomatically. In accordance with a determination that the system isable to fulfill the request automatically, the server system fulfillsthe user request with no human interaction. In accordance with adetermination that the system is not able to fulfill the request withouthuman intervention, the server system sends the request to a humanoperator for fulfillment.

In accordance with some implementations, a server system responding torequests submitted through a conversational interface is disclosed. Theserver system has one or more processors, and memory storing one or moreprograms to be executed by the one or more processors. The one or moreprograms include instructions for: receiving a request from a userthrough a conversational interface; determining, based on the request,whether the system is able to fulfill the request automatically; inaccordance with a determination that the system is able to fulfill therequest automatically, fulfilling the user request with no humaninteraction; and in accordance with a determination that the system isnot able to fulfill the request without human intervention, sending therequest to a human operator for fulfillment.

In accordance with some implementations, a non-transitory computerreadable storage medium storing one or more programs configured forexecution by a client system is disclosed. The one or more programsinclude instructions for: receiving a request from a user through aconversational interface; determining, based on the request, whether thesystem is able to fulfill the request automatically; in accordance witha determination that the system is able to fulfill the requestautomatically, fulfilling the user request with no human interaction;and in accordance with a determination that the system is not able tofulfill the request without human intervention, sending the request to ahuman operator for fulfillment.

In accordance with some implementations, a method for enablingcommunication with a user is disclosed. The method is performed on aserver system having one or more processors and memory storing one ormore programs for execution by the one or more processors. The serversystem sends communication data to a user using a first communicationchannel. The server system determines that the user has ceased using thefirst communication channel for receiving communications. The serversystem identifies a second communication channel. The server systemsends further communication data to the user using the identified secondcommunication channel.

In accordance with some implementations, a server system enablingcommunication with a user is disclosed. The server system has one ormore processors, and memory storing one or more programs to be executedby the one or more processors. The one or more programs includeinstructions for: sending communication data to a user using a firstcommunication channel; determining that the user has ceased using thefirst communication channel for receiving communications; identifying asecond communication channel; and sending further communication data tothe user using the identified second communication channel.

In accordance with some implementations, a non-transitory computerreadable storage medium storing one or more programs configured forexecution by a server system is disclosed. The one or more programs alsoinclude instructions for receiving an indication of intent from a userto purchase a good or service within a specific category. The one ormore programs include instructions for: sending communication data to auser using a first communication channel; determining that the user hasceased using the first communication channel for receivingcommunications; identifying a second communication channel; and sendingfurther communication data to the user using the identified secondcommunication channel.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a client-server environment inaccordance with some implementations.

FIG. 2 is a block diagram illustrating a client system in accordancewith some implementations.

FIG. 3 is a block diagram illustrating a server system in accordancewith some implementations.

FIG. 4 depicts a block diagram of an exemplary data structure for a userprofile database for storing information related to users of the serversystem.

FIG. 5 is a flow diagram illustrating the process for requesting userdata in accordance with some implementations.

FIG. 6 is a flow diagram illustrating the process for responding torequests submitted through a conversational interface in accordance withsome implementations.

FIG. 7 is a flow diagram illustrating the process for enablingcommunication with a user in accordance with some implementations.

Like reference numerals refer to corresponding parts throughout thedrawings.

DESCRIPTION OF IMPLEMENTATIONS

In some implementations, a server system operates an online service(e.g., an online commerce system). In some implementations, the onlineservice gradually onboards a user while progressively getting more andmore data about the user. In some implementations, the online servicedetermines if a user request can be fulfilled automatically, and sendsthe request to a human operator for fulfillment if the service is unableto fulfill the request automatically. In some implementations, theonline service has multiple channels or modes of communications orinteraction with the user.

In some implementations, where the online service is an online commercesystem, a user can purchase goods or services, accumulate a socialnetwork of users of the online service, recommend goods or services tousers of the online service, and recommend users to the online service.In some implementations, users of the online service access thesefeatures through a web site operated by the online service or throughany of multiple modes of communication with the online service (e.g.,email to a specified email address).

In some implementations, the server system gradually onboards a useronto the online service while progressively getting more and more dataabout the user (e.g., requesting the user to provide more information).In some implementations, the server system gets more data about the userby directly asking the user for data, extracting data from elsewhere(e.g., other social networks, publicly accessible online content), orinferring data from other data associated with the user (e.g., inferringdata from data already in the user's profile). In some implementations,the server system asks the user to verify extracted or inferred data. Insome implementations, the server system asks the user to provide orverify data gradually, such as periodically or when the data is neededto fulfill a user request, as opposed to all at once. The servicecommunicates to the user the reasons the online service is seeking thedata. The user can then make an informed decision regarding whether toprovide the data or not, or even to have the data removed.

In some implementations, the user signs up for the online service byproviding certain information (e.g., a name and/or an email address).With that information, the server system builds a profile of the user,which then can be augmented with additional information.

In some implementations, a new user signs up for the online servicethrough initial introductory communications. For example, a first useris copied on a message sent to the online service by a second user, or amessage from the first user to the second user is forwarded to theonline service by the second user; the copying or the forwardingimplicitly invites the first user to the online service. As anotherexample, the first user is explicitly invited to the online service bythe second user (e.g., the second user submits to the online service thefirst user as an invitee), with the online service sending an invitationmessage to the first user. The first user signs up for the onlineservice by interacting with the online service (e.g., continuing toparticipate in the message thread that includes the copied or forwardedmessage, clicking on a web link in an invitation message). In someimplementations, a long-form signup process is omitted for the firstuser. From the copied or forwarded message, or the invitation from thesecond user, the server system extracts data about the first user thatis used to sign up the first user (e.g., the user's name and/or emailaddress).

In some implementations, the server system of the online service thenhas a user and at least one social relationship, since the user wasinvited or recommended by another user. The user is graduallyincorporated into more complex social networks within the onlineservice. Any implicit introduction or encounter with another userthrough the service can progressively allow the user to broaden theirsocial network within the online service. For example, the user invitesother users to the online service, and the other users who sign up forthe online service becomes part of the inviter user's social networkwithin the online service.

In some implementations, the online service solicits from the useradditional information, inviting the user to respond with a diversearray of data types. For example, the online service can prompt a userto provide a profile picture, or various social media user names. Theonline service may also ask the user to verify data that were extractedor inferred by the online service (e.g., “we believe this might be apicture of you; if it is, respond Yes”).

In some implementations, the server system of the online servicesolicits additional information from the user when the user makes arequest to access a service or feature within the online service; theonline service solicits the additional information in order to fulfillthe user request. For example, when the user invites (e.g., recommends aproduct to) another user to the online service, the online servicedisplay a dialog for direct input of the invitee's contact information,and optionally displays a dialog for authorization to access athird-party service (e.g., a social network outside of the onlineservice). The user is informed in the dialog that the authorization isneeded for the online service to access the third-party service, withthe benefit of that access being that the user can, for example, importdata or invite users from the third-party service to the online service.If the user provides the information for authorization to access thethird-party service, the user can specify a user in the third partyservice as an invitee, and the online service, optionally, links to theuser the third-party service account corresponding to the authorizationinformation.

As another example, when the user makes a request within the onlineservice to purchase a good or service, if the user's profile does notalready include payment information, the server system solicits paymentinformation (e.g., credit card number, name on credit card, billingaddress, etc.) from the user in order to fulfill the purchase request.

Continuing with the payment information example, the payment informationis stored in the user's profile and can be used to extract or inferfurther information not already in the user profile. For example, thename on the credit card may be inferred to be the user's real name, andthe user is asked by the online service to confirm whether that is thecase. The name can also be used to extract additional information (e.g.,profession, social network profile, photo, etc.) from external sources(e.g., publicly available content). Upon confirmation by the user, theextracted or inferred information is added to the user profile.

As a user encounters various features in our system, this will triggerrequests for additional information. In some implementations, theseinclude authorization dialogues with third party services, orconversational requests/notifications of actions to be responded to.

In some implementations, the online service makes solicitations ofinformation from the user that are not prompted by a user request. Forexample, the online service periodically asks the user to verify a pieceof extracted or inferred information without being prompted by aspecific request by the user.

In some implementations, the solicitation of information follows asequence that is defined by a state machine or decision tree, or thelike. The state machine or decision tree defines a sequence or path ofinformation requests based on, for example, what information the onlineservice already has for the user.

In some embodiments, the online service recognizes the following datatypes:

Email;

Real user name;

Email addresses of friends;

Names of friends;

Interests;

Trusted friends by category;

Demographic information;

Gender;

Family/Relationship situation;

Age;

Education/Occupation;

Location;

Address;

Credit Card;

Phone;

Pictures;

Social network accounts;

Activity history;

Communications; and

Recommendations sent.

In some implementations, the online service offers the samefunctionality offered in a “web site” through conversational channels.For example, if a user can accomplish a task on a web site, the user canalso accomplish the task by communicating with the online servicethrough any of multiple channels.

In some implementations, different users have different preferences intheir modes or channels of communication with the online service.Examples of the different modes or channels of communication include aweb site, email, messaging (e.g., chat, instant messaging, SMS), socialnetworking posts (e.g., Twitter tweets, status updates or comments in asocial network), and voice communication (e.g., telephony).

In some implementations, the flexibility of responding to natural humanlanguage comes at a cost because of its varied and open-ended nature.User may believe that they are communicating with a human when inreality they are communicating with a computer. While many requests maybe handled automatically, some must be referred to a humanadministrator.

In some implementations, automation can speed up response rates andeliminate errors and repetitive work. At one end of the automationscale, the online service has a system where a user interacts directly(e.g., through a web site or a mobile app). At the other end, a usercommunicates with a human administrator. In between, there are othertypes of communication. These modes or channels of communication may beviewed, at a high level, as filling out forms with the information thatis needed for the online service to fulfill user requests. The onlineservice knows what information is needed to fulfill a request, andattempts to get this information as quickly and easily for the user aspossible. Thus, the communications between the user and the onlineservice is a conversation of sorts, and the multiple modes or channelsof communication between the user and the online service, aggregately,may be viewed as a conversational interface.

In some implementations, some requests are complete (i.e., onlineservice has the information needed to fulfill the request). For example,the information is all included in the request email or filled in a format a web site of the online service. But some requests have missingpieces of information that needs to be obtained from the user. Otherrequests may be ambiguous (e.g., the communication making the request isambiguous) and the online service needs to verify the request with theuser to ensure that the request is understood correctly. In someimplementations, whether a request can be fulfilled automatically by theonline service without the intervention of a human administrator isbased on whether the request is ambiguous and/or whether there isinformation needed to fulfill the request that is missing and that needsto be confirmed in-person.

In some implementations, the obtaining of information needed to completethe request or resolution of an ambiguous request is automated. Forexample, if a user requests to buy a shoe, but forgets to indicate asize, the online service can automatically ask for the size by sendingan email, an SMS, an instant message, or direct a human administrator tocall the user. If the online service can detect what is missingautomatically, the conversation between the user and the online servicecan be carried out more quickly, in some implementations, some types ofinformation, if missing, are be sought from the user automaticallywithout human intervention. For example, in the above example, theonline service would automatically send a message to the user to getmissing shoe size. On the other hand, some types of information, ifmissing, are sought or confirmed by in-person communications. Forexample, credit card information and other sensitive information, ifmissing, are sought or confirmed with, for example, a phone call from ahuman administrator to the user.

In some implementations, the communications between the online serviceand the user include use of specific nomenclature that restricts thespace of valid responses. This helps reduce the possibility of ambiguityin the communications.

In some implementations, information needed to fulfill a request neednot be all included in the communication conveying the request. Forexample, the online service can retrieve information from the user'sprofile, if needed, to fulfill the request. For example, if the onlineservice knows a user from previous engagements the online service mayalready know the user's preferred selections, for example, their shoesize. The online service may then predict that a new purchase will be ofthe same size, and a communication to the user is sent to verify thatthe online service has made the correct selection.

In some implementations, the online service adjusts the rate of itscommunications with the user. For example, by responding quickly whenthe user is actively responding, the online service increases thelikelihood that the user will respond quickly again with furtherinformation. But if the user is responding slowly (e.g., time durationbetween responses above a certain threshold), the online service canassume the user has stepped away from their device and will wait longerbefore following up further.

In some implementations, any incoming communications from the user tothe online service is sent to a specified email address. A communicationsent to the specified email address can be about anything a user wantsto communicate to the online service, and on the receiving end, theonline service processes the communication automatically or with a humanadministrator, depending on the nature of the communication.

In some implementations, because of the open-ended nature ofcommunication, the online service automatically makes a best guess ofwhat type a communication belongs to based on features in thecommunication that are extractable by the online service. When anincoming email is a reply to earlier messages, the context of the emailin view of the conversation the email belongs to is known. It is moredifficult with a communication initiated by a user.

In some implementations, in an online service that is an online commercesystem, possible types of incoming messages, that are not replies,include:

Recommendation. The user wants to:

-   -   Recommend a product or service in general, also known as a        product submission;    -   Recommend a product or service to another user, a product        recommendation;    -   Request a recommendation in a category; the user wants a        suggestion of what to buy from her social network within the        online service;    -   Purchase. The user would like to buy a specified product;    -   Nomination. The user would like to nominate a user as somebody        they trust in a category;    -   Other. All other email;

Invitation responses;

Feedback and suggestions;

Returns;

Problems that need attention; and

Spam and other irrelevant messages.

In some implementations, the online service has algorithms for thedisambiguation of incoming messages. Some are rule-based but others mayuse machine learning techniques.

In some implementations, for each message type, as disambiguated, theonline service follows a process of responding to and handling themessage type as if the request in the message had been submitted/takenas an action on a web site of the online service.

In some implementations, the online service allows its users tocommunicate with the online service and convey requests using naturallanguage and a predefined structure for processing the communications.The structure has, for example, one or more rules for processingcommunications from users and determining how to proceed. For example, arule may be that a reply with a specific term conveys a specific type ofrequest. Another rule may be that certain terms are known to beambiguous, and thus trigger follow-ups for clarification (e.g.,follow-up communication soliciting clarification or even humanintervention). In the allowance of user communication using naturallanguage and the user of a defined language structure to process thecommunications, the online service may be considered to be aconversational interface. In general, conversational interfaces are likelanguage oriented state machines, where the states may require veryspecific structure, or very broad interpretation (e.g., replying “buy”to a tweet kicks off a state flow that results in a purchase). Further,the state flow through the state machine of the conversational interfacecan be linear or interleaving; just as one can explore a websitelinearly (e.g., by referencing a sitemap) or in a path-dependent mannerwhere the next page to visit is based on what is in the current page,communications in a conversational interface can have similarproperties—a linear flow or an interleaving flow.

In some implementations, multiple channels or modes of communication(e.g., email, social networks, instant messaging, telephony, etc.) areavailable for communications between users and the online service.Within a conversation thread between the user and the online service,the user can switch modes. For example, the user starts out sendingemail to the online service, and then switches to instant messaging. Theonline service detects the change and switches to match thecommunication channel used by the user.

In some implementations, internal services within the online servicecommunicate with a single interface by specifying a target user combinedwith a payload of metadata pertaining to the outbound message. Theinterface receiving this information identifies a set of possiblechannels for the target user by calling a set of classificationservices. Once a channel has been identified, it is stored and used forall further communication.

FIG. 1 is a block diagram illustrating a client-server environment 100in accordance with some implementations. The client-server environment100 includes one or more client systems 102-1 and 102-2, a server system120, and one or more vendors 160, all connected over a network 110. Insome implementations, the client system 102 includes one or more clientapplications 104 and a display 106. The server system 120 includes auser communication module 128, an information gathering module 124, arequest processing module 126, and a user profile database 130. Thenetwork 110 may consist of any one or more of any of a variety ofnetworks, including local area networks (LAN), wide area networks (WAN),wireless networks, wired networks, the Internet, or any combination ofsuch networks.

In accordance with some implementations, the client system 102 includesone or more client applications 104. The one or more client applications104 include, but are not limited to, a web browsing application forconnecting to the server system 120. The client system 102 also includesa display 106. In some implementations, the client system is a computingdevice with the display integrated directly the device itself, such as alaptop, a smart phone, and a tablet computer. In other implementationsthe display is connected to, but not integrated into the client system.For example, desktop computer systems often do not have an integrateddisplay and instead connect to a standalone display.

In some implementations, the client system 102 sends communications toand receives communications form the server system 120 over any viablecommunication medium. For example, a communication can be transmittedvia e-mail, text, voice mail, social media message, an instant message,a message through a messaging service internal to the server system, orthrough the messaging service of another web service or web site.

In some implementations, when the user of the client system 102 repliesto a communication from the server system 120, the client system 102sends the response to the server system 120 via the same communicationmethod that was used to send the replied-to communication. For example,if the original communication was received through an email message, theclient system then uses the email messaging system to send a response.In some implementations, the client system 102 uses a differentcommunication method to send a response. For example, the originalcommunication is sent as an instant message through a chat program.Instead of responding through the chat program, the user sends aresponse via an email.

In accordance with some implementations, the server system 120 includesa user communication module 128, an information gathering module 124, arequest processing module 126, and a user profile database 130. The usercommunication module 128 is configured to send and receivecommunications with a user, through any communication channel the userselects. The user communications module 128 also determines the user'sselected communication channel if the user leaves the previouscommunication channel, receives requests from users, and receivesindication from a user that they are changing their currentcommunication channel.

In some implementations, the user communication module 128 determinesthe communication method based on past communications with the user ofthe client system. Thus, the user communication module 128 chooses thecommunication method that the user of the client system 102 uses mostoften when communicating with the server system. For example, if a usercommunicates with the server system 120 through email in 75% ofcommunications, the server system 120 will use an email messaging systemto communicate with the user. In some implementations, each user selectsa preferred communication method and this preference is stored in theuser profile database 130. For example, a user selects text messaging asthe preferred method for receiving messages and in response the usercommunication module 128 will then use text messages to sendcommunications to the user, unless directed otherwise. In someimplementations, the user communication module 128 will use multiplecommunication methods to send communications to the user.

In some implementations, the user communication module 128 chooses thecommunication method based on the time and date that the communicationis to be sent. For example, the user communication module 128 uses emailmessages to deliver communications during the standard workday (9 am-5pm Monday through Friday) and uses text messages to delivercommunications on the weekend and evenings. In some implementations, nocommunications will be sent during typical sleeping hours. In someimplementations, each user selects time and data preferences for theuser communication module 128 to use and these preferences are stored inthe user profile database 130.

In some implementations, the user communication module 128 receivesresponses from client systems 102. In some implementations, eachresponse is transmitted to the request processing module 126. In someother implementations, each response is transmitted to the informationgathering module 124 before it is transmitted to the request processingmodule 126. In yet other implementations, a copy of the response istransmitted to both to the information gathering module 124 and therequest processing module 126.

In some implementations, the request processing module 126 receives arequest from a user and determining whether the server system 120 canautomatically respond to the request without human interaction, and ifnot, forward the request to a human operator for fulfillment. In someimplementations, the request processing module 126 identifies the typeof request, identifies the information needed to fulfill the request,and determines whether the server system 120 has the information neededto fulfill the request.

In some implementations, the information gathering module 124 gathersand collects data associated with users. The gathering and collecting ofdata include asking the user to provide or confirm data, crawling andextracting data from content hosts 160, and analyzing the user profiledatabase 130 to infer additional data. In some implementations, askingof users to provide or confirm data is gradual (e.g., periodic) and/orresponsive to user requests.

In some implementations the user profile database 130 contains userprofiles for users who have registered to use the service provided bythe server system 120. In some implementations, a user profile includesthe name, ID, demographic information (gender, age, location, etc),purchasing history, social network information (including username andpasswords for one or more social networking sites), and trustinformation. In some implementations, the user profile includes contactinformation submitted by the user or stored by the system after contactby the user including but not limited to email addresses, phone numbers,user names, instant message user IDs, and social networking sites userinformation sufficient to allow the service to access each of the user'ssocial networking sites. In some implementations, the user communicationmodule 128 uses information stored in the user profile database 130 tosend communications to the client system 102.

In some implementations, the content hosts 160 host content external tothe server system 120. Examples of content host(s) include web sites,social networks, and so on. In some implementations, the informationgathering module 124 crawls the content host(s) 160 to gatherinformation associated with users of the server system 120. The crawledinformation is presented to the respective users for confirmation, andinformation that is confirmed are stored in the user profile database130.

FIG. 2 is a block diagram illustrating a client system 102, inaccordance with some implementations. The client system 102 typicallyincludes one or more processing units (CPUs) 202, one or more networkinterfaces 210, memory 212, and one or more communication buses 214 forinterconnecting these components. The client system 102 includes a userinterface 204. The user interface 204 includes an associated displaydevice 106 and optionally includes an input means such as a keyboard,mouse, a touch sensitive display, or other input buttons 208.Optionally, the display device 106 includes an audio device or otherinformation delivery device. Furthermore, some client systems use amicrophone and voice recognition to supplement or replace the keyboard.

Memory 212 includes high-speed random access memory, such as DRAM, SRAM,DDR RAM or other random access solid state memory devices; and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. Memory 212 may optionallyinclude one or more storage devices remotely located from the CPU(s)202. Memory 212, or alternately the non-volatile memory device(s) withinmemory 212, includes a non-transitory computer readable storage medium.In some implementations, memory 212 or the computer readable storagemedium of memory 212 stores the following programs, modules and datastructures, or a subset thereof:

-   -   an operating system 216 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module 218 that is used for connecting        the client system 102 to other computers via the one or more        communication network interfaces 210 (wired or wireless) and one        or more communication networks, such as the Internet, other wide        area networks, local area networks, metropolitan area networks,        and so on;    -   a display module 220 for enabling display of media content on a        display 106 associated with the client system 102;    -   one or more client system 102 applications module(s) 104 for        enabling the client system 102 to perform the functions offered        by the client system 102, including but not limited to:        -   an application 224 for sending and receiving communications            to/from a server system (FIG. 1, 120) and displaying the            information (for example web pages) returned by the server            system (FIG. 1, 120) or a smart phone or other computer            system application that performs the same function; and    -   one or more client data module(s) 230 for storing data related        to the client system 102, including but not limited to:        -   client message data 232, including data representing            messages to be sent to the server system (FIG. 1, 120) and            messages received from the server system (FIG. 1, 120); and        -   user profile data 234, including information concerning            users of the client system 102 such as a user profile, user            preferences and interests, user contact information, and            other information relevant to providing services to the            user.

FIG. 3 is a block diagram illustrating a server system 120, inaccordance with some implementations. The server system 120 typicallyincludes one or more processing units (CPUs) 302, one or more networkinterfaces 304, memory 306, and one or more communication buses 308 forinterconnecting these components.

Memory 306 includes high-speed random access memory, such as DRAM, SRAM,DDR RAM or other random access solid state memory devices; and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. Memory 306 may optionallyinclude one or more storage devices remotely located from the CPU(s)302. Memory 306, or alternately the non-volatile memory device(s) withinmemory 306, includes a non-transitory computer readable storage medium.In some implementations, memory 306 or the computer readable storagemedium of memory 306 stores the following programs, modules and datastructures, or a subset thereof:

-   -   an operating system 310 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module 122 that is used for connecting        the server system 120 to other computers via the one or more        communication network interfaces 304 (wired or wireless) and one        or more communication networks, such as the Internet, other wide        area networks, local area networks, metropolitan area networks,        and so on;    -   one or more server application module(s) 314 for enabling the        server system 120 to perform the functions offered by the server        system 120, including but not limited to:        -   an information gathering module 124 for gathering and            collecting increasing amounts of data for a user, with the            user's permission, while also conveying the purpose of the            information gathering to the user;        -   a request processing module 126 for receiving a request from            a user and determining whether the server system (FIG. 1,            120) can automatically respond to the request without human            interaction, and if not, forward the request to a human            operator for fulfillment;        -   a user communication module 128 for communicating with a            user, through any communication channel the user selects,            determining the users selected determination channel if the            user leaves the previous communication channel; receiving            requests from users, and receiving indication from a user            that they are changing their current communication channel;            and    -   one or more server data module(s) 330 for storing data related        to the server system 120, including but not limited to:        -   user profile information database 130 including user            preferences and interests, user contact information, and            user history, including past user purchases, searches, page            views, previous product recommendations, previous product            reviews, social connections of the user, users' histories of            previous requests, user relationship data, user trust data,            user interest data, user payment data, the user's preferred            communication channel; the user's current communication            channel, and any other information related to the user.

FIG. 4 depicts a block diagram of an exemplary data structure for a userprofile database 130 for storing information related to users of theserver system (FIG. 1, 120). In accordance with some implementations,the user profile database 130 includes a plurality of user profiles402-1 to 402-P, each of which corresponds to a user registered with theserver system (FIG. 1, 120). In some implementations, each user profile402 contains a user profile ID 404, a user history 406, trustinformation 408, recommendations 410 made by the user, and user contactinformation 412.

In some implementations, user profile ID 404 is a value that uniquelyidentifies a specific user of the server system (FIG. 1, 120). In someimplementations, this value is chosen by the user and is a user name. Inother implementations, this value is assigned to the user by the serversystem (FIG. 1, 120) as part of the registration process.

In some implementations, the user history 406 stores a history of theuser's past interactions with the server system (FIG. 1, 120) includingpast user purchases, searches, page views, previous productrecommendations, previous product reviews, and social connections of theuser including previously recorded trust information for other usersand/or social information received from social networking sites.

In some implementations, trust information 408 includes data describingthe social connections of the user and includes a trust level for otherusers of the server system (FIG. 1, 120). A trust level is a valuerepresenting the degree to which a user trusts the opinions andrecommendations of another user. In some implementations, trustinformation is explicitly submitted by the users, in other situationsthe server system (FIG. 1, 120) infers trust information from theactions of users, and in yet other situations trust information includesinformation from both user submissions and server inferences.

In some implementations, recommendation 410 data includes productpurchases and product recommendations previously submitted by the user.In some implementations, contact information 412 includes a list ofcontact information for contacting the user through a plurality ofcommunication methods and information describing if and when the serversystem (FIG. 1, 120) should use that method. For example, the contactinformation 412 includes an email address, a phone number, and a socialnetwork ID for the user. The user may select that the server system(FIG. 1, 120) should never use social network messaging to contact touser and should use email address at all times except for the weekendand that a text message to a mobile phone should be used on the weekend.In some implementations, the contact information 412 includes login andpassword information for one or more social networking sites.

FIG. 5 is a flow diagram illustrating the process for requesting userdata in accordance with some implementations. Each of the operationsshown in FIG. 5 may correspond to instructions stored in a computermemory or computer readable storage medium. Optional operations areindicated by dashed lines (e.g., boxes with dashed-line borders). Insome implementations, the method described in FIG. 5 is performed by theserver system (FIG. 1, 120).

In some implementations, the server system (FIG. 1, 120) establishing auser profile (FIG. 4, 402) for a user (502). The user profile 402includes one or more information items associated with the user (e.g.,user history 406, contact information 412, etc.). In someimplementations, the user profile is established when the user signs upfor the online service that the server system 120 operates.

In some implementations, the server system (FIG. 1, 120) receives arequest from the user to access additional services (504). For example,the server system 120 receives a communication from the user torecommend another user, recommend a good or service, or to purchase agood or service.

In some implementations, in response to receiving the user request, theserver system (FIG. 1, 120) requesting additional information from theuser (506). For example, if the request is a product recommendation, theserver system 120 can ask the user to identify a user, within or withoutthe online service that the server system 120 operates, that referred aproduct to the user making the request. In some implementations,requesting additional information from the user includes requestinginformation needed to fulfill the user request (508). For example, ifthe request is a request to purchase a good, the server system 120 sendscommunications to the user requesting that the user provide anyinformation that is needed to make the purchase transaction but are notin the server system 120.

In some implementations, requesting additional information from the userincludes requesting that the user confirm information associated withthe user obtained from an information source. The server system 120extracts information associated with the user that is obtained from acontent host 160 (e.g., a third-party social network), and server system120 asks the user to confirm the extracted information. For example, ifthe request is a product recommendation, the server system 120 canextract information about the product from content hosts 160 and asksthe user to confirm the information. As another example, if the requestis a purchase request, the server system 120 can look in the userprofile database 130 for the user's past transactions, extractinformation from the past transactions that is relevant to the request,and ask the user to confirm that the extracted information is stillvalid. In some implementations, the information source is, for example,an online presence of the user, social network activity of the user, acommunications history of the user, or a requests history of the user.

In some implementations, requesting additional information from the userincludes requesting additional information from the user in accordancewith a predefined information request sequence. The sequence can bedefined, for example, by a state diagram, decision tree, or the like.With respect to a particular user profile 402, the location and pathwithin the state diagram or decision tree is based on, for example, howmuch and what information is in the user profile, if the user is makinga request, and the type of request, if any.

In some implementations, the server system 120 periodically makesunprompted requests for additional information from the user (508). Forexample, the server system 120 periodically presents a solicitation ofinformation to the user. The solicitation is not prompted by a specificuser request. In some implementations, the unprompted requests aredictated by the state diagram or decision tree described above based onwhat information is already in the user profile.

In some implementations, the server system 120 receives the requestedadditional information from the user (510), and adds the receivedadditional information to the user profile of the user (512). In someimplementations, the server system 120 infers information associatedwith the user based on the received information (514), and adds theinferred information to the user profile of the user (516).

FIG. 6 is a flow diagram illustrating the process for of responding torequests submitted through a conversational interface in accordance withsome implementations. Each of the operations shown in FIG. 6 maycorrespond to instructions stored in a computer memory or computerreadable storage medium. Optional operations are indicated by dashedlines (e.g., boxes with dashed-line borders). In some implementations,the method described in FIG. 6 is performed by the server system (FIG.1, 120).

In accordance with some implementations, the server system (FIG. 1, 120)receives a request from a user through a conversational interface (602).The server system determines, based on the request, whether the systemis able to fulfill the request automatically (604). The server system120 and a user of the client system 102 exchange communications, inwhich the user conveys a request (e.g., a purchase, a recommendation,etc.) and the server system 120 receives the communications anddetermines the type of request the user is conveying and whetherfulfillment of the request can be performed automatically, without humanintervention.

In some implementations, determining whether the system is able tofulfill the request automatically includes, in accordance with adetermination that a type of the request is ambiguous based on contentsof the request, determining that the system is not able to fulfill therequest without human intervention. For example, if the communicationconveying the request has ambiguity (e.g., ambiguity regarding the typeof request, ambiguity regarding information needed to fulfill therequest), the request is determined to require human intervention forfulfillment.

In some implementations, determining whether the system is able tofulfill the request automatically includes, in accordance with adetermination that one or more information items needed to fulfill therequest requires in-person confirmation by the user, determining thatthe system is not able to fulfill the request without humanintervention. For example, if the information needed for fulfilling therequest includes sensitive information that is not already in the userprofile, the server system 120 determines that the request requires ahuman administrator to communicate to the user in person (e.g., byphone, by video conference) to obtain and/or confirm the sensitiveinformation.

In accordance with a determination that the system is able to fulfillthe request automatically, the server system 120 fulfills the userrequest with no human interaction (606). For example, if the request isunambiguous and the server system 120 has all of the information neededto fulfill the request, the server system 120 fulfills the requestwithout forwarding the request to a human administrator for fulfillment.

In accordance with a determination that the system is not able tofulfill the request without human intervention, the server system 120sends the request to a human operator for fulfillment (608).

FIG. 7 is a flow diagram illustrating the process for enablingcommunication with a user in accordance with some implementations. Eachof the operations shown in FIG. 7 may correspond to instructions storedin a computer memory or computer readable storage medium. Optionaloperations are indicated by dashed lines (e.g., boxes with dashed-lineborders). In some implementations, the method described in FIG. 7 isperformed by the server system (FIG. 1, 120).

In accordance with some implementations, the server system (FIG. 1,120), sends communication data to a user using a first communicationchannel (702). The server system 120 determines that the user has ceasedusing the first communication channel for receiving communications(704). The server system 120 identifies a second communication channelcurrently being used by the user (706). The server system 120 sendsfurther communication data to the user using the identified secondcommunication channel (708).

Thus, for example, the server system 120 sends a communication to theuser at the client system 102 using, for example, instant messaging. Theserver system 120 then determines that the user has ceased using instantmessaging. The server system 120 identifies another communicationchannel (e.g., email), and sends future communications to the user usingthat another communication channel.

In some implementations, the first or the second communication channelis any of: email, chat messaging, text messaging, social networking, awebsite, message boards, voice communication (e.g., telephony,voicemail, voice over Internet Protocol, etc.), and video conferencing.

In some implementations, determining that the user has ceased using thefirst communication channel for receiving communication includesreceiving a communication from the user on a communication channeldifferent from the first communication channel. In some implementations,identifying the second communication channel includes identifying thecommunication channel at which the communication was received as thesecond communication channel. For example, if the server system 120sends a communication to the user using the first communication channeland the user replies back using a communication channel different fromthe first communication channel, the server system 120 determines thatthe user has ceased using the first communication channel and hasswitched to a different communication channel. That differentcommunication channel is identified as the second communication channel.

In some implementations, determining that the user has ceased using thefirst communication channel receiving communication includesdetermining, in accordance with a schedule, that the user desires toreceive communication at a communication channel different from thefirst communication channel. In some implementations, identifying thesecond communication channel includes identifying the secondcommunication channel in accordance with the schedule. For example, theuser profile for a user may have data specifying a schedule whenparticular communications channels are preferred. Alternatively, such aschedule may be predefined system-wide behavior for the server system120. The user's preferred communication channel for receivingcommunication changes with the time of day in accordance with theschedule, and the second communication channel is determined inaccordance with the schedule as well.

In some implementations, determining that the user has ceased using thefirst communication channel receiving communication includes detecting alog-out by the user from the first communication channel. For example,if the server system 120 and the user is communicating through a channelwithin the system (e.g., instant messaging in a web site operated by theserver system 120) and the user logs out from the channel (e.g., theuser logs out from the web site), the server system 120 determines thatthe user has cease using the channel within the system forcommunications and proceeds to switch to another channel (e.g., email).

The foregoing description, for purpose of explanation, has beendescribed with reference to specific implementations. However, theillustrative discussions above are not intended to be exhaustive or tolimit the invention to the precise forms disclosed. Many modificationsand variations are possible in view of the above teachings. Theimplementations were chosen and described in order to best explain theprinciples of the invention and its practical applications, to therebyenable others skilled in the art to best utilize the invention andvarious implementations with various modifications as are suited to theparticular use contemplated.

It will also be understood that, although the terms first, second, etc.may be used herein to describe various elements, these elements shouldnot be limited by these terms. These terms are only used to distinguishone element from another. For example, a first contact could be termed asecond contact, and, similarly, a second contact could be termed a firstcontact, without departing from the scope of the presentimplementations. The first contact and the second contact are bothcontacts, but they are not the same contact.

The terminology used in the description of the implementations herein isfor the purpose of describing particular implementations only and is notintended to be limiting. As used in the description of theimplementations and the appended claims, the singular forms “a,” “an,”and “the” are intended to include the plural forms as well, unless thecontext clearly indicates otherwise. It will also be understood that theterm “and/or” as used herein refers to and encompasses any and allpossible combinations of one or more of the associated listed items. Itwill be further understood that the terms “comprises” and/or“comprising,” when used in this specification, specify the presence ofstated features, integers, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, integers, steps, operations, elements, components,and/or groups thereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in response to detecting,” dependingon the context. Similarly, the phrase “if it is determined” or “if (astated condition or event) is detected” may be construed to mean “upondetermining” or “in response to determining” or “upon detecting (thestated condition or event)” or “in response to detecting (the statedcondition or event),” depending on the context.

What is claimed is:
 1. A method for enabling communication with a user,the method comprising at a computer system having one or moreprocessors, a camera, and memory storing one or more programs forexecution by the one or more processors: sending communication data to auser using a first communication channel; determining that the user hasceased using the first communication channel for receivingcommunications; identifying a second communication channel; and sendingfurther communication data to the user using the identified secondcommunication channel.
 2. The method of claim 1, wherein determiningthat the user has ceased using the first communication channel forreceiving communication comprises: receiving a communication from theuser on a communication channel different from the first communicationchannel.
 3. The method of claim 2, wherein identifying the secondcommunication channel comprises: identifying the communication channelat which the communication was received as the second communicationchannel.
 4. The method of claim 1, wherein determining that the user hasceased using the first communication channel receiving communicationcomprises: determining, in accordance with a schedule, that the userdesires to receive communication at a communication channel differentfrom the first communication channel.
 5. The method of claim 4, whereinidentifying the second communication channel comprises: identifying thesecond communication channel in accordance with the schedule.
 6. Themethod of claim 1, wherein determining that the user has ceased usingthe first communication channel receiving communication comprises:detecting a log-out by the user from the first communication channel. 7.The method of claim 1, wherein the first or the second communicationchannel is selected from the group consisting of: email, chat messaging,text messaging, social networking, a website, message boards, voicecommunication, and video conferencing.
 8. A server system for requestinguser data, comprising: one or more processors; and memory storing one ormore programs to be executed by the one or more processors; the one ormore programs comprising instructions for: sending communication data toa user using a first communication channel; determining that the userhas ceased using the first communication channel for receivingcommunications; identifying a second communication channel; and sendingfurther communication data to the user using the identified secondcommunication channel.
 9. The system of claim 8, comprising instructionsfor: receiving a communication from the user on a communication channeldifferent from the first communication channel.
 10. The system of claim9, comprising instructions for: identifying the communication channel atwhich the communication was received as the second communicationchannel.
 11. The system of claim 8, comprising instructions for:determining, in accordance with a schedule, that the user desires toreceive communication at a communication channel different from thefirst communication channel.
 12. The system of claim 11, comprisinginstructions for: identifying the second communication channel inaccordance with the schedule.
 13. The system of claim 8, comprisinginstructions for: detecting a log-out by the user from the firstcommunication channel.
 14. The system of claim 8, wherein the first orthe second communication channel is selected from the group consistingof: email, chat messaging, text messaging, social networking, a website,message boards, voice communication, and video conferencing.
 15. Anon-transitory computer readable storage medium storing one or moreprograms configured for execution by a server system, the one or moreprograms comprising instructions for: sending communication data to auser using a first communication channel; determining that the user hasceased using the first communication channel for receivingcommunications; identifying a second communication channel; and sendingfurther communication data to the user using the identified secondcommunication channel.